package anonymus.dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

import anonymus.excepcion.DAOExcepcion;
import anonymus.modelo.Alquiler;
//import anonymus.modelo.Servicio;
import anonymus.util.ConexionBD;

public class alquilerDAO  extends BaseDAO  {
	public void insertar(Alquiler vo) throws DAOExcepcion {
		System.out.println("alquilerDAO: insertar(Alquiler vo)");
		String query = "INSERT INTO alquiler(servicio_codServicio, usuario_username, cancha_has_horario_cancha_codCancha, cancha_has_horario_horario_codHorario) VALUES (?,?,?,?)";
		Connection con = null;
		PreparedStatement stmt = null;
		try {
			con = ConexionBD.obtenerConexion();
			
			String query2 = "select usuario_username from alquiler where cancha_has_horario_cancha_codCancha = ? AND cancha_has_horario_horario_codHorario = ?";
			stmt = con.prepareStatement(query2);
			stmt.setInt(1, vo.getCancha_().getCodCancha());
			stmt.setInt(2, vo.getHorario_().getCodHorario());
			ResultSet rs;
			rs = stmt.executeQuery();
			if (rs != null && rs.next()) 
			{
				System.out.println("CANCHA YA RESERVADA");
				throw new DAOExcepcion("CANCHA YA RESERVADA");
			}
			else
			{
			
			stmt = con.prepareStatement(query);
			stmt.setInt(1, vo.getServicio_().getCodServicio());
			stmt.setString(2, vo.getCliente_().getCorreo());				
			stmt.setInt(3, vo.getCancha_().getCodCancha());
			stmt.setInt(4, vo.getHorario_().getCodHorario());
			
			int i = stmt.executeUpdate();
			if (i != 1) {
				throw new SQLException("Que penita, no se pudo insertar jaaa");
			}
			//ULTIMO CODIGO AUTOGENERADO CREADO
			System.out.println("OK INSERTADO. Obteniendo codigo Autogenerado de Cancha");
			int idp = 0;
            query = "SELECT LAST_INSERT_ID()";
            stmt = con.prepareStatement(query);
            ResultSet rs2 = stmt.executeQuery();
            if (rs2.next()) {
                    idp = rs2.getInt(1);
            }
            vo.setCodAlquiler(idp);
            
			}
		} catch (SQLException e) {
			System.err.println(e.getMessage());
			throw new DAOExcepcion(e.getMessage());
		} finally {
			this.cerrarStatement(stmt);
			this.cerrarConexion(con);
		}
	}
}
